
Rajinder Singh
Deep Learning Researcher

वेब स्क्रैपिंग वेबसाइटों से डेटा निकालने के लिए एक विधि है। गो में, कॉली पुस्तकालय अपनी सरलता और शक्तिशाली विशेषताओं के कारण वेब स्क्रैपिंग के लिए एक लोकप्रिय उपकरण है। इस गाइड आपको गो में प्रोजेक्ट की सेटअप करने, एक बुनियादी स्क्रैपर बनाने, जटिल डेटा निकालने के मामलों के साथ निपटने और समानांतर मांगों के साथ अपने स्क्रैपर को अनुकूलित करने में मदद करेगा।
शुरू करने से पहले, अपने सिस्टम में गो स्थापित करने का निश्चित करें। निम्न आदेशों के साथ अपने प्रोजेक्ट को प्रारंभ करें और कॉली पैकेज लाएं:
go mod init my_scraper
go get -u github.com/gocolly/colly
इससे आपके प्रोजेक्ट डायरेक्टरी सेट हो जाती है और कॉली पैकेज स्थापित हो जाता है।
कैपसॉल्वर बोनस कोड के साथ अपना बोनस प्राप्त करें
अपने स्वचालन बजट को तत्काल बढ़ाएं!
कैपसॉल्वर खाता भरने के दौरान बोनस कोड CAPN का उपयोग करके प्रत्येक भरोसे में 5% बोनस प्राप्त करें — कोई सीमा नहीं।
अपने कैपसॉल्वर डैशबोर्ड में अब इसे रीडीम करें
.
हम एक विशिष्ट विकिपीडिया पृष्ठ से सभी लिंक्स निकालने के लिए एक बुनियादी स्क्रैपर बनाएंगे।
main.go बनाएं और निम्न कोड जोड़ें:package main
import (
"fmt"
"github.com/gocolly/colly"
)
func main() {
c := colly.NewCollector(
colly.AllowedDomains("en.wikipedia.org"),
)
c.OnHTML(".mw-parser-output", func(e *colly.HTMLElement) {
links := e.ChildAttrs("a", "href")
fmt.Println(links)
})
c.Visit("https://en.wikipedia.org/wiki/Web_scraping")
}
इस कोड नए कॉली कलेक्टर को en.wikipedia.org तक सीमित करता है, फिर पृष्ठ के .mw-parser-output डिव में सभी लिंक्स को खोजने और प्रिंट करने के लिए कॉलबैक सेट करता है।
अधिक जटिल कार्यों जैसे टेबल डेटा स्क्रैप करने और इसे CSV फ़ाइल में लिखने के लिए, आप गो में encoding/csv पैकेज का उपयोग कर सकते हैं:
main.go को निम्न कोड के साथ विस्तारित करें ताकि टेबल डेटा स्क्रैप किया जा सके:package main
import (
"encoding/csv"
"log"
"os"
"github.com/gocolly/colly"
)
func main() {
fName := "data.csv"
file, err := os.Create(fName)
if err != nil {
log.Fatalf("Could not create file, err: %q", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
c := colly.NewCollector()
c.OnHTML("table.wikitable", func(e *colly.HTMLElement) {
e.ForEach("tr", func(_ int, row *colly.HTMLElement) {
rowData := []string{}
row.ForEach("td", func(_ int, cell *colly.HTMLElement) {
rowData = append(rowData, cell.Text)
})
writer.Write(rowData)
})
})
c.Visit("https://en.wikipedia.org/wiki/List_of_programming_languages")
}
इस स्क्रिप्ट विकिपीडिया पृष्ठ से टेबल डेटा स्क्रैप करता है और इसे data.csv में लिखता है।
स्क्रैपिंग को तेज करने के लिए, आप गो के गोरूटीन का उपयोग करके समानांतर मांगों को बना सकते हैं। निम्न तरीका बताता है कि कैसे बहुत सारे पृष्ठों को समानांतर रूप से स्क्रैप करें:
package main
import (
"fmt"
"github.com/gocolly/colly"
"sync"
)
func scrape(url string, wg *sync.WaitGroup) {
defer wg.Done()
c := colly.NewCollector()
c.OnHTML("title", func(e *colly.HTMLElement) {
fmt.Println("Title found:", e.Text)
})
c.Visit(url)
}
func main() {
var wg sync.WaitGroup
urls := []string{
"https://en.wikipedia.org/wiki/Web_scraping",
"https://en.wikipedia.org/wiki/Data_mining",
"https://en.wikipedia.org/wiki/Screen_scraping",
}
for _, url := range urls {
wg.Add(1)
go scrape(url, &wg)
}
wg.Wait()
}
इस उदाहरण में, हम scrape फ़ंक्शन की परिभाषा करते हैं जो एक URL और एक वेट ग्रूप के रूप में आर्गुमेंट्स लेता है। फ़ंक्शन एक कॉली कलेक्टर प्रारंभ करता है, एक कॉलबैक सेट करता है जो पृष्ठ के शीर्षक को प्रिंट करता है, और URL पर जाता है। main फ़ंक्शन एक वेट ग्रूप बनाता है, एक सूची में URL के लिए पुनरावृत्ति करता है, और प्रत्येक URL के लिए एक गोरूटीन शुरू करता है ताकि समानांतर रूप से स्क्रैप किया जा सके।
इन चरणों का पालन करके, आप कॉली के साथ गो में बल्कि विश्वसनीय स्क्रैपर बना सकते हैं, विभिन्न स्क्रैपिंग परिदृश्यों के साथ निपट सकते हैं, और समानांतर मांगों के साथ प्रदर्शन को अनुकूलित कर सकते हैं। अधिक विस्तृत शिक्षण और उन्नत उपयोग के लिए, गो और कॉली के साथ वेब स्क्रैपिंग पर संसाधनों की जांच करें।
कॉली के अलावा, गो में वेब स्क्रैपिंग के लिए कई अन्य उत्कृष्ट पुस्तकालय हैं:
वेब स्क्रैपिंग वेबसाइटों से डेटा के प्रभावी निकालने के लिए एक शक्तिशाली और आवश्यक कौशल है। गो और कॉली पुस्तकालय के साथ, आप विभिन्न डेटा निकालने के परिदृश्यों, जैसे सरल लिंक्स के संग्रह से लेकर जटिल टेबल डेटा के निकालने तक, के साथ-साथ समानांतर मांगों के साथ प्रदर्शन को अनुकूलित करने वाले विश्वसनीय स्क्रैपर बना सकते हैं।
इस गाइड में आपने जाना कि:
इन चरणों का पालन करके, आप कॉली के साथ गो में प्रभावी और कुशल वेब स्क्रैपर बना सकते हैं। अधिक उन्नत उपयोग और विस्तृत शिक्षण के लिए, गो और कॉली के साथ वेब स्क्रैपिंग पर अतिरिक्त संसाधनों की जांच करें।
हां। कॉली को आसान और शुरुआती द्वारा उपयोग करने योग्य बनाया गया है, जबकि अभी भी डोम पार्सिंग, मांग प्रबंधन, कॉलबैक और समानांतरता जैसी शक्तिशाली विशेषताएं प्रदान करता है। भले ही नए गो विकासकर्ता हों, वे केवल कुछ लाइनों के कोड के साथ एक कार्यकर एस्क्रैपर बना सकते हैं।
पूर्ण रूप से। कॉली विशिष्ट एचटीएमएल नोड्स और विशेषताओं के चयन की अनुमति देता है, जो टेबल, सूचियां, लिंक और अन्य संरचित तत्वों के निकालने को आसान बनाता है। आप गो के मानक पुस्तकालयों के साथ सीएसवी या जेसॉन में परिणामों को सीधे संग्रहीत कर सकते हैं।
आप गो के गोरूटीन का उपयोग करके कई पृष्ठों को समानांतर रूप से प्रक्रिया कर सकते हैं। एक वेट ग्रूप के साथ समानांतर स्क्रैपर को शुरू करके और समाप्त करके, स्क्रैपिंग प्रदर्शन में महत्वपूर्ण वृद्धि होती है — विशेष रूप से बड़े डेटासेट या बहु-यूआरएल छापने के कार्यों के लिए।
Rust में वेब स्क्रैपिंग के स्केलेबल आर्किटेक्चर सीखें, reqwest, scraper, असिंक्रोनस स्क्रैपिंग, हेडलेस ब्राउज़र स्क्रैपिंग, प्रॉक्सी रोटेशन, और संगत CAPTCHA का निपटारा।

CapSolver के साथ RoxyBrowser के एकीकरण करें ताकि ब्राउज़र के कार्यों को स्वचालित किया जा सके और reCAPTCHA, Turnstile और अन्य CAPTCHAs को बायपास किया जा सके।
